package com.clementheliou.cheliou.dal.dao.mark;

import java.util.List;

import com.clementheliou.cheliou.dal.dao.generic.GenericDAO;
import com.clementheliou.cheliou.dal.model.mark.Mark;

/**
 * Interface of the data access object dedicated to the {@link Mark} instances.
 * 
 * @author Clément HELIOU (clement.heliou@gmail.com)
 * @see {@link GenericDAO};
 * @see {@link Mark}.
 * @since 1.0
 */
public interface MarkDAO extends GenericDAO<Mark> {

	/**
	 * Gets the mark given by a member for a photo.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @param photoId the marked photo's id.
	 * @param memberId the member's id.
	 * @return the resulting mark's if it exists, <tt>null</tt> otherwise.
	 * @since 1.0
	 */
	Mark getMarkOfMember(final Integer photoId, final Integer memberId);

	/**
	 * Gets all marks values of the given photo.
	 * 
	 * @author Clément HELIOU (clement.heliou@gmail.com)
	 * @param photoId the photo's id.
	 * @return the resulting mark's values list.
	 * @since 1.0
	 */
	List<Integer> getMarksOfPhoto(final Integer photoId);
}
